COPY_TEST_SPECS = [
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'files': {'/a': 'src/a', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'files': {'/a': 'src/a', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'IsADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'IsADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'files': {'/a': 'src/a', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'files': {'/a': 'src/a', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'IsADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'files': {'/a': 'src/a', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'files': {'/a': 'src/a', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'files': {'/a': 'dest/a', '/keep': '', '/x/a': 'src/a'}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'files': {'/a': 'dest/a', '/keep': '', '/x/a': 'src/a'}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'IsADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'files': {'/a': 'dest/a', '/keep': '', '/x': 'src/a'}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'files': {'/a': 'dest/a', '/keep': '', '/x/a': 'src/a'}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'files': {'/a': 'dest/a', '/keep': '', '/x': 'src/a'}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'IsADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'IsADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'IsADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'IsADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'IsADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'IsADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/a': 'src/a',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/a': 'src/a',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'IsADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'IsADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/a': 'src/a',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/a': 'src/a',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
                '/x/a': 'src/a',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
                '/x/a': 'src/a',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'IsADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {'/a/file3': 'dest/a/file3', '/a/subdir/file2': 'dest/a/subdir/file2', '/keep': '', '/x': 'src/a'}
        },
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
                '/x/a': 'src/a',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {'/a/file3': 'dest/a/file3', '/a/subdir/file2': 'dest/a/subdir/file2', '/keep': '', '/x': 'src/a'}
        },
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/a': 'src/a', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/a': 'src/a', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'IsADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'IsADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/a': 'src/a', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/a': 'src/a', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/a/a': 'src/a', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/a/a': 'src/a', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'IsADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/a': 'src/a', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/a/a': 'src/a', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/a': 'src/a', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/keep': '', '/x/a': 'src/a'}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/keep': '', '/x/a': 'src/a'}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'IsADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/keep': '', '/x': 'src/a'}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/keep': '', '/x/a': 'src/a'}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/keep': '', '/x': 'src/a'}},
        'src_trailing_slash': False,
        'src_type': 'file',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {
            'files': {'/a': 'dest/a', '/file1': 'src/a/file1', '/keep': '', '/subdir/file2': 'src/a/subdir/file2'}
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {
            'files': {'/a': 'dest/a', '/file1': 'src/a/file1', '/keep': '', '/subdir/file2': 'src/a/subdir/file2'}
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {
            'files': {'/a': 'dest/a', '/file1': 'src/a/file1', '/keep': '', '/subdir/file2': 'src/a/subdir/file2'}
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {
            'files': {'/a': 'dest/a', '/file1': 'src/a/file1', '/keep': '', '/subdir/file2': 'src/a/subdir/file2'}
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'NotADirectoryError'},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {
            'files': {
                '/a': 'dest/a',
                '/keep': '',
                '/x/a/file1': 'src/a/file1',
                '/x/a/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {
            'files': {
                '/a': 'dest/a',
                '/keep': '',
                '/x/a/file1': 'src/a/file1',
                '/x/a/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {
            'files': {
                '/a': 'dest/a',
                '/keep': '',
                '/x/a/file1': 'src/a/file1',
                '/x/a/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {
            'files': {
                '/a': 'dest/a',
                '/keep': '',
                '/x/a/file1': 'src/a/file1',
                '/x/a/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {
            'files': {'/a': 'dest/a', '/keep': '', '/x/file1': 'src/a/file1', '/x/subdir/file2': 'src/a/subdir/file2'}
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {
            'files': {'/a': 'dest/a', '/keep': '', '/x/file1': 'src/a/file1', '/x/subdir/file2': 'src/a/subdir/file2'}
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {
            'files': {'/a': 'dest/a', '/keep': '', '/x/file1': 'src/a/file1', '/x/subdir/file2': 'src/a/subdir/file2'}
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {
            'files': {'/a': 'dest/a', '/keep': '', '/x/file1': 'src/a/file1', '/x/subdir/file2': 'src/a/subdir/file2'}
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {
            'files': {
                '/a': 'dest/a',
                '/keep': '',
                '/x/a/file1': 'src/a/file1',
                '/x/a/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {
            'files': {'/a': 'dest/a', '/keep': '', '/x/file1': 'src/a/file1', '/x/subdir/file2': 'src/a/subdir/file2'}
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {
            'files': {
                '/a': 'dest/a',
                '/keep': '',
                '/x/a/file1': 'src/a/file1',
                '/x/a/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {
            'files': {'/a': 'dest/a', '/keep': '', '/x/file1': 'src/a/file1', '/x/subdir/file2': 'src/a/subdir/file2'}
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file1': 'src/a/file1',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'src/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file1': 'src/a/file1',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'src/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file1': 'src/a/file1',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'src/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file1': 'src/a/file1',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'src/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/file1': 'src/a/file1',
                '/keep': '',
                '/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/file1': 'src/a/file1',
                '/keep': '',
                '/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/file1': 'src/a/file1',
                '/keep': '',
                '/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/file1': 'src/a/file1',
                '/keep': '',
                '/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file1': 'src/a/file1',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'src/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file1': 'src/a/file1',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'src/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file1': 'src/a/file1',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'src/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file1': 'src/a/file1',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'src/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/a/file1': 'src/a/file1',
                '/a/a/subdir/file2': 'src/a/subdir/file2',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/a/file1': 'src/a/file1',
                '/a/a/subdir/file2': 'src/a/subdir/file2',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/a/file1': 'src/a/file1',
                '/a/a/subdir/file2': 'src/a/subdir/file2',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/a/file1': 'src/a/file1',
                '/a/a/subdir/file2': 'src/a/subdir/file2',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file1': 'src/a/file1',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'src/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file1': 'src/a/file1',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'src/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file1': 'src/a/file1',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'src/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file1': 'src/a/file1',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'src/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/a/file1': 'src/a/file1',
                '/a/a/subdir/file2': 'src/a/subdir/file2',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/a/file1': 'src/a/file1',
                '/a/a/subdir/file2': 'src/a/subdir/file2',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/a/file1': 'src/a/file1',
                '/a/a/subdir/file2': 'src/a/subdir/file2',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/a/file1': 'src/a/file1',
                '/a/a/subdir/file2': 'src/a/subdir/file2',
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
                '/x/a/file1': 'src/a/file1',
                '/x/a/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
                '/x/a/file1': 'src/a/file1',
                '/x/a/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
                '/x/a/file1': 'src/a/file1',
                '/x/a/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
                '/x/a/file1': 'src/a/file1',
                '/x/a/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
                '/x/file1': 'src/a/file1',
                '/x/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
                '/x/file1': 'src/a/file1',
                '/x/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
                '/x/file1': 'src/a/file1',
                '/x/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
                '/x/file1': 'src/a/file1',
                '/x/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
                '/x/a/file1': 'src/a/file1',
                '/x/a/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
                '/x/file1': 'src/a/file1',
                '/x/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
                '/x/a/file1': 'src/a/file1',
                '/x/a/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {
            'files': {
                '/a/file3': 'dest/a/file3',
                '/a/subdir/file2': 'dest/a/subdir/file2',
                '/keep': '',
                '/x/file1': 'src/a/file1',
                '/x/subdir/file2': 'src/a/subdir/file2',
            }
        },
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/a/file1': 'src/a/file1', '/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/a/file1': 'src/a/file1', '/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/a/file1': 'src/a/file1', '/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/a/file1': 'src/a/file1', '/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/file1': 'src/a/file1', '/keep': '', '/subdir/file2': 'src/a/subdir/file2'}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/file1': 'src/a/file1', '/keep': '', '/subdir/file2': 'src/a/subdir/file2'}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/file1': 'src/a/file1', '/keep': '', '/subdir/file2': 'src/a/subdir/file2'}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/file1': 'src/a/file1', '/keep': '', '/subdir/file2': 'src/a/subdir/file2'}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/a/file1': 'src/a/file1', '/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/a/file1': 'src/a/file1', '/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/a/file1': 'src/a/file1', '/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/a/file1': 'src/a/file1', '/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/a/a/file1': 'src/a/file1', '/a/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/a/a/file1': 'src/a/file1', '/a/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/a/a/file1': 'src/a/file1', '/a/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/a/a/file1': 'src/a/file1', '/a/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/a/file1': 'src/a/file1', '/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/a/file1': 'src/a/file1', '/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/a/file1': 'src/a/file1', '/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/a/file1': 'src/a/file1', '/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/a/a/file1': 'src/a/file1', '/a/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/a/file1': 'src/a/file1', '/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/a/a/file1': 'src/a/file1', '/a/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/a/file1': 'src/a/file1', '/a/subdir/file2': 'src/a/subdir/file2', '/keep': ''}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/keep': '', '/x/a/file1': 'src/a/file1', '/x/a/subdir/file2': 'src/a/subdir/file2'}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/keep': '', '/x/a/file1': 'src/a/file1', '/x/a/subdir/file2': 'src/a/subdir/file2'}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/keep': '', '/x/a/file1': 'src/a/file1', '/x/a/subdir/file2': 'src/a/subdir/file2'}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/keep': '', '/x/a/file1': 'src/a/file1', '/x/a/subdir/file2': 'src/a/subdir/file2'}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/keep': '', '/x/file1': 'src/a/file1', '/x/subdir/file2': 'src/a/subdir/file2'}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/keep': '', '/x/file1': 'src/a/file1', '/x/subdir/file2': 'src/a/subdir/file2'}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/keep': '', '/x/file1': 'src/a/file1', '/x/subdir/file2': 'src/a/subdir/file2'}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/keep': '', '/x/file1': 'src/a/file1', '/x/subdir/file2': 'src/a/subdir/file2'}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/keep': '', '/x/a/file1': 'src/a/file1', '/x/a/subdir/file2': 'src/a/subdir/file2'}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/keep': '', '/x/file1': 'src/a/file1', '/x/subdir/file2': 'src/a/subdir/file2'}},
        'src_trailing_slash': True,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'files': {'/keep': '', '/x/a/file1': 'src/a/file1', '/x/a/subdir/file2': 'src/a/subdir/file2'}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'files': {'/keep': '', '/x/file1': 'src/a/file1', '/x/subdir/file2': 'src/a/subdir/file2'}},
        'src_trailing_slash': False,
        'src_type': 'dir',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'file',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'dir',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': None,
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'a',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_dir',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'dest_is_target',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': True,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': True,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
    {
        'dest_basename': 'x',
        'dest_trailing_slash': False,
        'dest_type': 'noexist',
        'result': {'exception': 'FileNotFoundError'},
        'src_trailing_slash': False,
        'src_type': 'noexist',
        'treat_dest_as': 'infer_dest',
    },
]
